home *** CD-ROM | disk | FTP | other *** search
- /* YEquals.c -- Modal dialog */
- /* Created 940321 20:45 by AppMaker */
-
- #include <Types.h>
- #include <Quickdraw.h>
- #include <Controls.h>
- #include <Dialogs.h>
- #include <Events.h>
- #include <Lists.h>
- #include <Menus.h>
- #include <TextEdit.h>
- #include "ResourceDefs.h"
- #include "Miscellany.h"
- #include "DialogAids.h"
- #include "WindowAids.h"
- #include "YEquals.h"
- #include "ErrorWindow.h"
- #include <AppleEvents.h>
-
- #define OKButton 1
- #define CancelButton 2
- #define Y1Label 3
- #define Y2Label 4
- #define Y3Label 5
- #define Y4Label 6
- #define Field7 7 /* Y1 text */
- #define Field8 8 /* Y2 text */
- #define Field9 9 /* Y3 text */
- #define Field10 10 /* Y4 text */
- #define YEQUALSLabel 11
- #define Button12 12 /* ^ */
- #define Button13 13 /* / */
- #define Button14 14 /* * */
- #define Button15 15 /* - */
- #define Button16 16 /* + */
- #define Button17 17 /* π */
- #define eButton 18 /* e^ */
- #define LogButton 19 /* Log */
- #define LnButton 20 /* Ln */
- #define SinButton 21 /* Sin */
- #define CosButton 22 /* Cos */
- #define TanButton 23 /* Tan */
- #define ArcTanButton 24 /* ArcTan */
- #define ArcSinButton 25 /* ArcSin */
- #define ArcCosButton 26 /* ArcCos */
- #define x10Button 27 /* 10^ */
- #define Button28 28 /* √ */
- #define Button29 29 /* ( */
- #define Button30 30 /* ) */
- #define qButton 31 /* theta */
- #define x7Button 32 /* 7 */
- #define x8Button 33 /* 8 */
- #define x9Button 34 /* 9 */
- #define x4Button 35 /* 4 */
- #define x5Button 36 /* 5 */
- #define x6Button 37 /* 6 */
- #define x1Button 38 /* 1 */
- #define x2Button 39 /* 2 */
- #define x0Button 40 /* 0 */
- #define Button41 41 /* decimal point */
- #define x3Button 42 /* 3 */
- #define xxButton 43 /* x */
- #define ChkSynButton 44 /* check syntax */
- #define SelTgt 45 /* select target */
- // OSErr FindAProcess (
- // OSType typeToFind,
- // OSType creatorToFind,
- // ProcessSerialNumberPtr processSN,
- // ProcessInfoRecPtr infoRecToFill
- // );
-
- static void DoChkSynButton ( short lastItem, YEqualsRec *YEquals, DialogPtr theDialog);
-
-
- /*----------*/
-
-
- static void DoChkSynButton ( short lastItem, YEqualsRec *YEquals, DialogPtr theDialog)
- {
- short i,j,k,m;
- WindowPtr errorWin;
- YEqualsRecPtr info;
- StringHandle message;
- Point thePt;
- Rect Y1Rect,Y2Rect,Y3Rect,Y4Rect;
-
- info = YEquals;
- j = 0;
- k = 0;
- m = 0;
- SetRect(&Y1Rect,190,4,380,22);
- SetRect(&Y2Rect,190,22,380,40);
- SetRect(&Y3Rect,190,40,380,58);
- SetRect(&Y4Rect,190,58,380,76);
- switch(lastItem)
- {
- case 7:
- MoveTo(4,0);
- for(i = 1;i <= info->Field7Text[0];i++)
- {
- if(info->Field7Text[i] == '(') j++;
- if(info->Field7Text[i] == ')') k++;
- }
- break;
- case 8:
- for(i = 1;i <= info->Field8Text[0];i++)
- {
- if(info->Field8Text[i] == '(') j++;
- if(info->Field8Text[i] == ')') k++;
- }
- break;
- case 9:
- for(i = 1;i <= info->Field9Text[0];i++)
- {
- if(info->Field9Text[i] == '(') j++;
- if(info->Field9Text[i] == ')') k++;
- }
- break;
- case 10:
- for(i = 1;i <= info->Field10Text[0];i++)
- {
- if(info->Field10Text[i] == '(') j++;
- if(info->Field10Text[i] == ')') k++;
- }
- break;
- }
- if( j == k ) ; /* do nothing */
- else
- {
- m++;
- Move(0,m * 18);
- GetPen(&thePt);
- switch(lastItem)
- {
- case 7:
- EraseRect(&Y1Rect);
- BlockMove("\pIn the Y1 = field, there ",cur->Field3Handle,25);
- /*DrawString("\pIn the Y1 = field, there ");*/
- break;
- case 8:
- EraseRect(&Y2Rect);
- BlockMove("\pIn the Y2 = field, there ",cur->Field3Handle,25);
- /* DrawString("\pIn the Y2 = field, there ");*/
- break;
- case 9:
- EraseRect(&Y3Rect);
- BlockMove("\pIn the Y3 = field, there ",cur->Field3Handle,25);
- /* DrawString("\pIn the Y3 = field, there ");*/
- break;
- case 10:
- EraseRect(&Y4Rect);
- BlockMove("\pIn the Y4 = field, there ",cur->Field3Handle,25);
- /* DrawString("\pIn the Y4 = field, there ");*/
- break;
- }
- if(j - k >= 2)
- {
- BlockMove("\pare ",cur->Field3Handle,4);
- /*DrawString("\pare ");*/
- message = GetString(3001); /* too many occurences of '\(' */
- BlockMove(*message,cur->Field3Handle,GetHandleSize((Handle) message));
-
- /*DrawString(*message);*/
- MoveTo(thePt.h,thePt.v);
- }
- else if(j - k == 1 || k - j == 1)
- {
- BlockMove("\pis ",cur->Field3Handle,3);
- /* DrawString("\pis ");*/
- message = GetString(3002); /* no '\)' found to match '\(' */
- BlockMove(*message,cur->Field3Handle,GetHandleSize((Handle) message));
- /*DrawString(*message);*/
- MoveTo(thePt.h,thePt.v);
- }
- else if(k - j >=2)
- {
- BlockMove("\pare ",cur->Field3Handle,4);
- /* DrawString("\pare ");*/
- message = GetString(3000); /* too many occurences of '\)' */
- BlockMove(*message,cur->Field3Handle,GetHandleSize((Handle) message));
- /*DrawString(*message);*/
- MoveTo(thePt.h,thePt.v);
- }
- }
-
- } /*DoChkSynButton*/
-
- /*----------*/
- Boolean GetYEquals (YEqualsRec *YEquals)
- {
- DialogPtr theDialog;
- GrafPtr savePort,save2Port;
- Boolean result;
- Boolean done;
- short itemNr;
- register YEqualsRecPtr info;
- short i,lastItem;
- TEHandle dialogTE;
- WindowPtr saveCur,errorCur;
- WindowPtr errorWin = nil;
- ModalFilterUPP gMyStandardFilterUPP;
- OSErr iErr;
- AEEventClass theAEEventClass;
- AEEventID theAEEventID;
- AppleEvent theResult;
- DescType typeCode;
-
- lastItem = 7;
- GetPort (&savePort);
- InitCursor ();
- theDialog = GetNewDialog (YEqualsID, nil, (WindowPtr) -1L);
- SetPort (theDialog);
- info = YEquals;
- SetDText (Field7, info->Field7Text);
- SetDText (Field8, info->Field8Text);
- SetDText (Field9, info->Field9Text);
- SetDText (Field10, info->Field10Text);
-
- ShowWindow (theDialog);
- OutlineButton (1);
- gMyStandardFilterUPP = NewModalFilterProc(StandardFilter); /* new */
- done = false;
- while (!done) {
-
- //ModalDialog (StandardFilter, &itemNr);
- ModalDialog(gMyStandardFilterUPP,&itemNr);
- dialogTE = ( (DialogPeek)theDialog)->textH;
- switch (itemNr) {
- case OKButton:
- result = true;
- done = true;
- break;
- case CancelButton:
- result = false;
- done = true;
- break;
- case Field7:
- GetDText (itemNr, info->Field7Text);
- lastItem = itemNr;
- break;
- case Field8:
- GetDText (itemNr, info->Field8Text);
- lastItem = itemNr;
- break;
- case Field9:
- GetDText (itemNr, info->Field9Text);
- lastItem = itemNr;
- break;
- case Field10:
- GetDText (itemNr, info->Field10Text);
- lastItem = itemNr;
- break;
- case Button12:
- TEKey(94,dialogTE); /* ^( */
- TEKey(40,dialogTE);
- /* TEKey forces an update after every */
- /* key, whereas SetIText will let you */
- /* blast a bunch of chars to the field */
- /* before the update */
- break;
- case Button13:
- TEKey(47,dialogTE); /* / */
- break;
- case Button14:
- TEKey(42,dialogTE); /* * */
- break;
- case Button15:
- TEKey(45,dialogTE); /* - */
- break;
- case Button16:
- TEKey(43,dialogTE); /* + */
- break;
- case Button17:
- TEKey(185,dialogTE); /* π */
- break;
- case eButton:
- TEKey(101,dialogTE); /* e^( */
- TEKey(94,dialogTE);
- TEKey(40,dialogTE);
- break;
- case LogButton:
- TEKey(76,dialogTE); /* Log( */
- TEKey(111,dialogTE);
- TEKey(103,dialogTE);
- TEKey(40,dialogTE);
- break;
- case LnButton:
- TEKey(76,dialogTE); /* Ln( */
- TEKey(110,dialogTE);
- TEKey(40,dialogTE);
- break;
- case SinButton:
- TEKey(83,dialogTE); /* Sin( */
- TEKey(105,dialogTE);
- TEKey(110,dialogTE);
- TEKey(40,dialogTE);
- break;
- case CosButton:
- TEKey(67,dialogTE); /* Cos( */
- TEKey(111,dialogTE);
- TEKey(115,dialogTE);
- TEKey(40,dialogTE);
- break;
- case TanButton:
- TEKey(84,dialogTE); /* Tan( */
- TEKey(97,dialogTE);
- TEKey(110,dialogTE);
- TEKey(40,dialogTE);
- break;
- case ArcTanButton:
- TEKey(65,dialogTE); /* ArcTan( */
- TEKey(114,dialogTE);
- TEKey(99,dialogTE);
- TEKey(84,dialogTE);
- TEKey(97,dialogTE);
- TEKey(110,dialogTE);
- TEKey(40,dialogTE);
- break;
- case ArcSinButton:
- TEKey(65,dialogTE); /* ArcSin( */
- TEKey(114,dialogTE);
- TEKey(99,dialogTE);
- TEKey(83,dialogTE);
- TEKey(105,dialogTE);
- TEKey(110,dialogTE);
- TEKey(40,dialogTE);
- break;
- case ArcCosButton:
- TEKey(65,dialogTE); /* ArcCos( */
- TEKey(114,dialogTE);
- TEKey(99,dialogTE);
- TEKey(67,dialogTE);
- TEKey(111,dialogTE);
- TEKey(115,dialogTE);
- TEKey(40,dialogTE);
- break;
- case x10Button:
- TEKey(49,dialogTE); /* 10^( */
- TEKey(48,dialogTE);
- TEKey(94,dialogTE);
- TEKey(40,dialogTE);
- break;
- case Button28:
- TEKey(195,dialogTE); /* √ */
- TEKey(40,dialogTE);
- break;
- case Button29:
- TEKey(40,dialogTE); /* ( */
- break;
- case Button30:
- TEKey(41,dialogTE); /* ) */
- break;
- case qButton:
- TEKey(84,dialogTE); /* theta */
- TEKey(104,dialogTE);
- TEKey(101,dialogTE);
- TEKey(116,dialogTE);
- TEKey(97,dialogTE);
- break;
- case x7Button:
- TEKey(55,dialogTE); /* 7 */
- break;
- case x8Button:
- TEKey(56,dialogTE); /* 8 */
- break;
- case x9Button:
- TEKey(57,dialogTE); /* 9 */
- break;
- case x4Button:
- TEKey(52,dialogTE); /* 4 */
- break;
- case x5Button:
- TEKey(53,dialogTE); /* 5 */
- break;
- case x6Button:
- TEKey(54,dialogTE); /* 6 */
- break;
- case x1Button:
- TEKey(49,dialogTE); /* 1 */
- break;
- case x2Button:
- TEKey(50,dialogTE); /* 2 */
- break;
- case x0Button:
- TEKey(48,dialogTE); /* 0 */
- break;
- case Button41:
- TEKey(46,dialogTE); /* decimal point */
- break;
- case x3Button:
- TEKey(51,dialogTE); /* 3 */
- break;
- case xxButton:
- TEKey(120,dialogTE); /* x */
- break;
- case ChkSynButton:
- GetDText (7, info->Field7Text);
- GetDText (8, info->Field8Text);
- GetDText (9, info->Field9Text);
- GetDText (10, info->Field10Text);
- GetPort(&save2Port); /* GrafPtr save2Port; */
- /*saveCur = curWindow;*/ /* WindowPtr saveCur; */
- if(errorWin == nil)
- {
- errorWin = OpenErrorWindow ("\p", 0, 0); /*OpenErrorWindow (fName, vRefNum, fRefNum);*/
- /*SetPort(errorWin);*/
- /*errorCur = curWindow;*/
- /*SelectWindow(errorWin);*/
- }
- else
- {
- SetPort(errorWin);
- }
- for(i = 7;i <= 10;i++)
- {
- DoChkSynButton ( i/*lastItem*/ , YEquals, theDialog);
- }
- /*SetInfo (saveCur);*/
- SetPort(save2Port);
- SelectWindow((WindowPtr)save2Port);
- break;
-
- } /* switch */
- } /* while */
- //DisposHandle ((Handle) cur->filename);
- //DiscardInfo (curWindow);
-
-
- //theAEEventID = ;
- //theAEEventClass = 'aevt';
- //iErr = AECreateDesc(typeCode,dataPtr,dataSize,&result);
- //iErr = AECreateAppleEvent(theAEEventClass,theAEEventID,&target,returnID,transactionID,&theResult);
- //AESend(result);
-
- DisposDialog (theDialog);
- SetPort (savePort);
- return (result);
- } /*GetYEquals*/
-
- /* YEquals */
-